// 导入axios
import axios from "axios";
import router from '../router';
import { ElMessage } from 'element-plus'
import store from '../store'

// 拦截器

// 请求发出之前拦截
axios.interceptors.request.use(function (config) {

    // 请求之前将token传给后端，只有当token存在时才添加
    const token = localStorage.getItem("token")
    if (token) {
        config.headers.Authorization = `Bearer ${token}`
    }

    return config;
  }, function (error) {
    return Promise.reject(error);
  });

// 请求得到响应之前拦截
axios.interceptors.response.use(function (response) {
    const {authorization} = response.headers
    authorization && localStorage.setItem("token",authorization)

    return response;
  }, function (error) {

    // 错误处理
    if(error.response) {
      const {status} = error.response
      if(status===401){
        // 清除用户信息
        store.commit("clearUserInfo")
        localStorage.removeItem("token")
        
        // 显示友好提示
        ElMessage.warning({
          message: '登录已过期，请重新登录',
          duration: 3000
        })
        
        // 跳转到登录页
        router.push("/login")
      }
    }
    return Promise.reject(error);
  });